<?php
/**
 * 轻舟CMS(QZLOG)
 *
 * 一款基于PHP+MYSQL的开源内容管理系统，模板标签简单、可扩展性强，利于二次开发，轻松建站的首选利器。
 *
 * @package     QZLOG
 * @license     http://www.qzlog.com/license
 * @link        http://www.qzlog.com
 * @mail        info@shyohan.com
 * @since       Version 3.0
 * @copyright   Copyright (c) 2015 - 2017 上海优翰信息科技有限公司. All rights reserved.
 */

defined('IN_QZLOG') OR exit('QZLOG:No direct script access allowed!');

/**
 * 后台登录模型
 * @author LINK <link@shyohan.com>
 */
class LoginModel extends ViewModel
{
    //用户表
    public $table = 'member';

    /**
     * 登录验证
     * @author LINK <link@shyohan.com>
     * @var array
     */
    public $validate = array(
        array('code', 'isCode', '验证码输入错误', 2, 3),
        array('username', 'nonull', '帐号不能为空', 2, 3),
        array('username', 'isUser', '帐号不存在', 2, 3),
        array('password', 'nonull', '密码不能为空', 2, 3),
        array('password', 'isPassword', '', 2, 3)
    );

    /**
     * 验证码检测
     * @author LINK <link@shyohan.com>
     * @param $name
     * @param $value
     * @param $msg
     * @param $arg
     * @return mixed
     */
    public function isCode($name, $value, $msg, $arg)
    {
        if (empty($value)) {
            return '验证码不能为空';
        } else if (strtoupper($value) !== session('code')) {
            return $msg;
        } else {
            return true;
        }
    }

    /**
     * 验证帐号
     * @author LINK <link@shyohan.com>
     * @param $name
     * @param $value
     * @param $msg
     * @param $arg
     * @return bool|string
     */
    public function isUser($name, $value, $msg, $arg)
    {
        $map['username'] = $value;
        if ($user = M('member')->where($map)->find()) {
            if ($user['status'] != 1) {
                return '此帐号被禁用';
            }
            return true;
        } else {
            return $msg;
        }
    }

    /**
     * 验证密码
     * @author LINK <link@shyohan.com>
     * @param $name
     * @param $value
     * @param $msg
     * @param $arg
     * @return bool|string
     */
    public function isPassword($name, $value, $msg, $arg)
    {
        $map['username'] = Q('post.username');
        $user = M('member')->where($map)->find();
        if (empty($value)) {
            return '密码不能为空';
        } else if (md5($value . $user['code']) != $user['password']) {
            return '密码输入错误';
        } else {
            return true;
        }
    }

    /**
     * 登录
     * @author LINK <link@shyohan.com>
     * @return bool
     */
    public function login()
    {
        if ($this->validate()) {
            $map['username'] = Q('post.username', '', '');
            $user = $this->where($map)->find();
            $data['id'] = $user['id'];
            $data['last_login_time'] = time(); //修改登录时间
            $data['last_login_ip'] = ip_get_client(); //修改登录IP
            M('member')->save($data);
            M('member')->inc('login','id='.$user['id'],1);
            //删除不需要的字段
            unset($user['password']);
            unset($user['code']);
            session('user', $user);
            return true;
        } else {
            return false;
        }
    }
}